<?php

/**
 * 系统管理模块路由配置
 * 路由规范化完成标记 - 已按照ROUTE_STANDARDIZATION_PLAN.md统一为/api前缀路由
 */

use think\facade\Route;

// 系统配置相关路由
Route::group('api/home/conf', function () {
    Route::get('/list', 'home.Conf/list');              // 获取配置项列表
    Route::get('/view', 'home.Conf/view');              // 查看单个配置项信息
    Route::post('/add', 'home.Conf/add');               // 新建配置项
    Route::put('/edit', 'home.Conf/edit');              // 编辑配置项
    Route::delete('/del', 'home.Conf/del');             // 删除配置项（软删除）
    Route::post('/update_value', 'home.Conf/update_value'); // 更新配置项值
    Route::get('/get_value', 'home.Conf/get_value');    // 获取配置项值
});

// 菜单相关路由
Route::group('api/home/menu', function () {
    Route::get('/list', 'home.Menu/list');              // 获取菜单列表
});

// 规则相关路由 - RESTful API
Route::group('api/home/rule', function () {
    Route::get('', 'home.Rule/list');             // 获取功能节点列表
    Route::get('/list', 'home.Rule/list');        // 兼容旧路径：获取功能节点列表
    Route::get('/stats', 'home.Rule/stats');      // 获取统计数据
    Route::get('/rule_list', 'home.Rule/rule_list'); // 获取菜单节点列表
    Route::get('/:id', 'home.Rule/read');         // 查看单个功能节点详情
    Route::post('', 'home.Rule/save');            // 创建功能节点
    Route::put('/:id', 'home.Rule/update');       // 更新功能节点
    Route::delete('/:id', 'home.Rule/delete');    // 删除功能节点
    Route::post('/clearCache', 'home.Rule/clearRuleCache'); // 清除功能节点缓存
})->middleware('JwtAuth');


// 角色相关路由
Route::group('api/home/role', function () {
    Route::get('/list', 'home.Role/list');              // 获取角色列表
    Route::get('/view', 'home.Role/view');              // 查看单个角色信息（兼容旧路径）
    Route::get('/:id', 'home.Role/read');               // 查看单个角色详情（RESTful）
    Route::post('/add', 'home.Role/add');               // 新建角色（兼容旧路径）
    Route::post('', 'home.Role/save');                  // 创建角色（RESTful）
    Route::put('/edit', 'home.Role/edit');              // 编辑角色（兼容旧路径）
    Route::put('/:id', 'home.Role/update');             // 更新角色（RESTful）
    Route::delete('/del', 'home.Role/del');             // 删除角色（兼容旧路径）
    Route::delete('/:id', 'home.Role/delete');          // 删除角色（RESTful）
    Route::get('/set', 'home.Role/set');                // 设置角色（获取启用的角色列表）
    Route::get('/active-list', 'home.Role/activeList'); // 获取启用的角色列表（RESTful）
    Route::post('/:id/copy', 'home.Role/copy');         // 复制角色（RESTful）
    Route::post('/batch-status', 'home.Role/batchUpdateStatus'); // 批量更新角色状态
})->middleware('JwtAuth');

// 模块相关路由
Route::group('api/home/module', function () {
    Route::get('/list', 'home.Module/list');            // 获取模块列表
    Route::get('/view', 'home.Module/view');            // 查看单个模块信息
    Route::post('/add', 'home.Module/add');             // 新建模块
    Route::put('/edit', 'home.Module/edit');            // 编辑模块
    Route::delete('/del', 'home.Module/del');           // 删除模块
    Route::post('/toggle_status', 'home.Module/toggleStatus'); // 启用/禁用模块
    Route::post('/recovery', 'home.Module/recovery');   // 恢复模块
    Route::post('/install', 'home.Module/install');     // 安装模块
    Route::get('/set', 'home.Module/set');              // 设置模块（获取启用的模块列表）
});

// 数据字典相关路由
Route::group('api/home/cate', function () {
    Route::get('/list', 'home.Cate/list');              // 获取数据字典列表
    Route::get('/view', 'home.Cate/view');              // 查看单个数据字典信息
    Route::post('/add', 'home.Cate/add');               // 新建数据字典
    Route::put('/edit', 'home.Cate/edit');              // 编辑数据字典
    Route::delete('/del', 'home.Cate/del');             // 删除数据字典
    Route::get('/set', 'home.Cate/set');                // 设置数据字典（获取启用的数据字典列表）
});

// 企业主体相关路由
Route::group('api/home/cate/enterprise', function () {
    Route::get('/list', 'home.Cate/enterprise');        // 获取企业主体列表
    Route::post('/add', 'home.Cate/enterprise_add');    // 新建/编辑企业主体
    Route::delete('/del', 'home.Cate/enterprise_del');  // 删除企业主体
    Route::get('/check', 'home.Cate/enterprise_check'); // 企业主体设置（检查）
});

// 地区相关路由 - 已整合到system模块，保留注释说明
// 注：地区相关API已统一迁移至 /api/system/region/* 
// 原有 /api/home/area/* 路由通过system.php中的兼容路由实现

// 文件相关路由 - 直接使用一级路由以符合前端调用习惯
Route::get('api/file/download', 'home.Files/download');

// 任务相关路由
Route::group('api/home/task', function () {
    Route::get('/list', 'home.Task/list');              // 获取任务列表
    Route::get('/view', 'home.Task/view');              // 查看单个任务信息
    Route::post('/add', 'home.Task/add');               // 新建任务
    Route::put('/edit', 'home.Task/edit');              // 编辑任务
    Route::delete('/del', 'home.Task/del');             // 删除任务
    Route::post('/save', 'home.Task/save');             // 保存任务（新增或编辑）
});

// 模板相关路由
Route::group('api/home/template', function () {
    Route::get('/list', 'home.Template/list');          // 获取模板列表
    Route::get('/view', 'home.Template/view');          // 查看单个模板信息
    Route::post('/add', 'home.Template/add');           // 新建模板
    Route::put('/edit', 'home.Template/edit');          // 编辑模板
    Route::delete('/del', 'home.Template/del');         // 删除模板
    Route::post('/set_status', 'home.Template/set_status');  // 设置模板状态
});

// 文件相关路由
Route::group('api/home/files', function () {
    Route::get('/list', 'home.Files/index');             // 获取文件列表
    Route::get('/view/:id', 'home.Files/view');          // 查看单个文件信息
    Route::get('/public_view/:id', 'home.Files/publicRead'); // 公开查看单个文件信息（用于合同附件等场景）
    Route::post('/add', 'home.Files/add');               // 新建文件
    Route::post('/upload', 'home.Files/upload');         // 上传文件
    Route::post('/uploads', 'home.Files/uploads');       // 批量上传文件
    Route::put('/edit', 'home.Files/edit');              // 编辑文件
    Route::delete('/del/:id', 'home.Files/del');         // 删除文件（RESTful风格）
      Route::delete('/del', 'home.Files/del');             // 删除文件（向后兼容）
    Route::post('/delete', 'home.Files/del');            // 删除文件（已save方法兼容）
    Route::post('/download', 'home.Files/download');     // 下载文件
    Route::post('/batch_download', 'home.Files/batchDownload'); // 批量下载文件
    Route::post('/preview', 'home.Files/preview');       // 预览文件
    Route::post('/move', 'home.Files/move');             // 移动文件
    Route::post('/copy', 'home.Files/copy');             // 复制文件
    Route::post('/rename', 'home.Files/rename');         // 重命名文件
    Route::post('/create_dir', 'home.Files/createDir');  // 创建文件夹
    Route::get('/dir_list', 'home.Files/getDirList');    // 获取文件夹列表
    Route::get('/get_file_url', 'home.Files/getFileUrl'); // 获取文件URL
    Route::get('/get_files_by_id', 'home.Files/getFilesById'); // 根据ID获取文件列表
    Route::post('/set_default', 'home.Files/setDefault'); // 设置默认文件
    Route::post('/set_cover', 'home.Files/setCover');    // 设置封面
    Route::post('/set_public', 'home.Files/setPublic');  // 设置公开
    Route::get('/get_public_url', 'home.Files/getPublicUrl'); // 获取公开URL
});

// 日志相关路由
Route::group('api/home/log', function () {
    Route::get('/list', 'home.Log/list');                // 获取日志列表
    Route::get('/view', 'home.Log/view');                // 查看单个日志信息
    Route::get('/set', 'home.Log/set');                  // 设置日志（获取启用的日志类型列表）
    Route::post('/clear', 'home.Log/clear');             // 清空日志
    Route::post('/export', 'home.Log/export');           // 导出日志
    Route::get('/statistics', 'home.Log/statistics');    // 日志统计
    Route::get('/get_log_type', 'home.Log/getLogType');  // 获取日志类型
});

// 标签相关路由
Route::group('api/home/tag', function () {
    Route::get('/list', 'home.Tag/list');                // 获取标签列表
    Route::get('/view', 'home.Tag/view');                // 查看单个标签信息
    Route::post('/add', 'home.Tag/add');                 // 新建标签
    Route::put('/edit', 'home.Tag/edit');                // 编辑标签
    Route::delete('/del', 'home.Tag/del');               // 删除标签
    Route::get('/set', 'home.Tag/set');                  // 设置标签（获取启用的标签列表）
    Route::post('/batch_del', 'home.Tag/batchDel');      // 批量删除标签
});

// 通知相关路由
Route::group('api/home/notice', function () {
    Route::get('/list', 'home.Notice/list');             // 获取通知列表
    Route::get('/view', 'home.Notice/view');             // 查看单个通知信息
    Route::post('/add', 'home.Notice/add');              // 新建通知
    Route::put('/edit', 'home.Notice/edit');             // 编辑通知
    Route::delete('/del', 'home.Notice/del');            // 删除通知
    Route::post('/set_status', 'home.Notice/setStatus'); // 设置通知状态
    Route::get('/get_notice_count', 'home.Notice/getNoticeCount'); // 获取未读通知数量
    Route::post('/read', 'home.Notice/read');            // 标记通知为已读
    Route::post('/batch_read', 'home.Notice/batchRead'); // 批量标记通知为已读
});

// 消息相关路由
Route::group('api/home/message', function () {
    Route::get('/list', 'home.Message/list');            // 获取消息列表
    Route::get('/view', 'home.Message/view');            // 查看单个消息信息
    Route::post('/add', 'home.Message/add');             // 新建消息
    Route::put('/edit', 'home.Message/edit');            // 编辑消息
    Route::delete('/del', 'home.Message/del');           // 删除消息
    Route::post('/send', 'home.Message/send');           // 发送消息
    Route::get('/get_message_count', 'home.Message/getMessageCount'); // 获取未读消息数量
    Route::post('/read', 'home.Message/read');           // 标记消息为已读
    Route::post('/batch_read', 'home.Message/batchRead'); // 批量标记消息为已读
});

// 主页统计信息路由
Route::get('api/home/index/main', 'home.Index/main');
Route::post('api/home/index/edit_password', 'home.Index/editPassword');

// Dashboard 统计数据路由
Route::group('api/home/dashboard', function () {
    Route::get('/stats', '\app\controller\DashboardController@getStats');  // 获取Dashboard统计数据
});


// 数据库管理相关路由
Route::group('api/home/database', function () {
    Route::get('/database', 'home.Database/database');          // 获取数据表列表
    Route::get('/view', 'home.Database/view');                  // 查看单个数据表信息
    Route::post('/backup', 'home.Database/backup');            // 备份数据库
    Route::post('/restore', 'home.Database/restore');          // 恢复数据库
    Route::delete('/del', 'home.Database/del');                // 删除备份文件
    Route::get('/backup_list', 'home.Database/backupList');    // 获取备份文件列表
    Route::get('/downfile', 'home.Database/downfile');         // 下载备份文件
    Route::get('/list', 'home.Database/list');                 // 向后兼容：获取数据表列表
    Route::post('/import', 'home.Database/import');            // 向后兼容：导入数据库
    Route::post('/optimize', 'home.Database/optimize');        // 优化数据表
    Route::post('/repair', 'home.Database/repair');            // 修复数据表
});

// 数据权限配置相关路由
Route::group('api/home/dataauth', function () {
    Route::get('/list', 'home.Dataauth/list');              // 获取模块配置列表
    Route::get('/view', 'home.Dataauth/view');              // 查看单个模块配置信息
    Route::post('/add', 'home.Dataauth/add');               // 新建模块配置
    Route::put('/edit', 'home.Dataauth/edit');              // 编辑模块配置
    Route::delete('/del', 'home.Dataauth/del');             // 删除模块配置
});

// 验证码相关路由 - JWT兼容的无状态验证码
Route::group('api/captcha', function () {
    // 无状态验证码（推荐）
    Route::get('/stateless', '\\app\\controller\\StatelessCaptchaController@generate');      // 生成无状态验证码
    Route::post('/stateless/verify', '\\app\\controller\\StatelessCaptchaController@verify'); // 验证无状态验证码
    
    // 兼容原有验证码接口
    Route::get('/', 'CaptchaController/index');                 // 兼容原有验证码生成
    Route::post('/check', 'CaptchaController/check');           // 验证验证码
    Route::get('/test', 'CaptchaController/test');              // 测试验证码控制器
});

// 系统管理模块路由规范化完成标记
// ROUTE_STANDARDIZATION_DONE: home.php - 所有路由已统一添加/api前缀，结构优化完成